docker run --name container-name -e POSTGRES_PASSWORD=mypassword -e POSTGRES_USER=myuser -e POSTGRES_DB=mydatabase -p 5432:5432 -d postgres:latest
重點記得環境變數,因為他們會影響到django跟dbeaver設定。
環境變數:
本地與container同步資料:-v ./Desktop/storage:/var/lib/postgresql/data
套件下載:
windows: poetry add psycopg2
mac: poetry add psycopg2-binary
在settings.py
檔中找到資料庫的設定:
# 這是預設的sqlite設定
DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": BASE_DIR / "db.sqlite3",
}
}
把它改成以下:
皆為自己設定的內容
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': ‘<POSTGRES_DB>’,
'USER': '<POSTGRES_USER>',
'PASSWORD': '<POSTGRES_USER>',
'HOST': 'localhost',
'PORT': '5432',
}
}
記得另外再利用 dotenv ,把資料存在 .env,例如:
settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.getenv("POSTGRES_DB"),
'USER': os.getenv("POSTGRES_USER"),
'PASSWORD': os.getenv("POSTGRES_PASSWORD"),
'HOST': os.getenv("POSTGRES_HOST"),
'PORT': os.getenv("POSTGRES_PORT"),
}
}
.env:
POSTGRES_DB = mydatabase
POSTGRES_USER = myuser
POSTGRES_PASSWORD = mypassword
POSTGRES_HOST = localhost
POSTGRES_PORT = 5432
點擊最左上角的按鈕:
選擇 pg 並按 next:
設定:
Database 輸入 POSTGRES_DB
Username 輸入 POSTGRES_USER
Password 輸入 POSTGRES_PASSWORD
table 藏在這裡
這時候可以從 django makemigraions 然後 migrate 試試看有沒有成功。有成功的話應該會長出一堆table。
postgresql | django | dbeaver |
---|---|---|
POSTGRES_PASSWORD | PASSWORD | Password |
POSTGRES_USER | USER | Username |
POSTGRES_DB | NAME | Database |